package cn;

import cn.conf.SpringConf;
import cn.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConf.class);
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        userDao.addUser();

        /**
         * 结果
         * 环绕开始：执行目标方法之前，模拟开启事务...
         * 前置通知 ：模拟执行权限检查...,目标类是：cn.dao.impl.UserDaoImpl@22f31dec,被织入增强处理的目标方法为：addUser
         * *** userDao操作：添加用户 ***
         * 后置通知：模拟记录日志...,被织入增强处理的目标方法为：addUser
         * 最终通知：模拟方法结束后的释放资源...
         * 环绕结束：执行目标方法之后，模拟关闭事务...
         */

        /**
         * 异常结果 (开启 cn.dao.impl.UserDaoImpl#addUser() 中的 int i = 10 / 0;)
         * 环绕开始：执行目标方法之前，模拟开启事务...
         * 前置通知 ：模拟执行权限检查...,目标类是：cn.dao.impl.UserDaoImpl@22f31dec,被织入增强处理的目标方法为：addUser
         * 异常通知：出错了/ by zero
         * 最终通知：模拟方法结束后的释放资源...
         */
    }
}
